<!DOCTYPE html>
<html lang='en'>

<head>
    <meta charset='UTF-8'>
    <meta name='viewport' content='width=device-width, initial-scale=1.0'>
    <title>Document</title>
    <script src='./vue.js'></script>
</head>

<body>
    <div id='app'>
        <h1>出生于：{{ birthYear }} 年龄是：{{age}}</h1>

        <button @click="changeYear">修改出生年份</button>
        <button @click="changeAge">修改年龄</button>

    </div>
</body>
<script>
    const app = {
        data() {
            return {
                birthYear: 2000
            }
        },
        methods: {
            changeYear() {
                this.birthYear = 2002
            },
            changeAge() {
                console.log(this.age);

                // 设置年龄的时候，发现修改失败了，有一个警告说的是 age 为只读，不可改变
                // this.age = 18

                // 当修改完计算属性的设置后，这里就可以进行改变了
                this.age = 18

            }
        },
        // 计算属性选项
        computed: {

            // age() {
            //     return new Date().getFullYear() - this.birthYear
            // }

            // 如果计算属性想要进行修改，可以将计算属性写为对象的方式，不要写成函数了
            // 对象中可以配置一个 get 和一个 set 方法
            age: {
                // get 是用来获取计算结果用的
                get() {
                    return new Date().getFullYear() - this.birthYear
                },
                // set 是用来修改值用的，一定要有一个参数
                set(value) {
                    // 根据年龄推算出，出生的年份，年份发生改变，年龄也会发生改变
                    this.birthYear = new Date().getFullYear() - value
                }
            }
        }
    }
    const vm = Vue.createApp(app).mount('#app')
</script>

</html>